package common

import (
	"encoding/json"
	"io/ioutil"
	"log"
	"net/http"
	"sync"

	"gitee.com/Yu-eng/Myproject/my-go-blog/config"
	"gitee.com/Yu-eng/Myproject/my-go-blog/models"
)

var Template models.HtmlTemplate

func LoadTemplate() {
	//对加载模板的操作进行优化
	w := sync.WaitGroup{}
	w.Add(1)
	go func() {
		//这一步的操作比较耗时所以 单独起协程去解决\
		var err error
		Template, err = models.InitTemplate(config.Cfg.System.CurrentDir + "/template/")
		if err != nil {
			panic(err)
		}
		w.Done()
	}()
	w.Wait()
}

//该方法定义登录成功的前端页面数据返回处理
func Success(w http.ResponseWriter, data interface{}) {
	//根据用户输入的登录名 和密码 返回对应的json数据

	var result models.Result
	result.Code = 200
	result.Error = ""
	result.Data = data
	jsonData, err := json.Marshal(result)
	if err != nil {
		log.Println("登录成功数据 序列化失败 ,", err)
		return
	}
	//这里告诉前端页面 我么返回的是一个json 的数据类型
	w.Header().Set("Content_Type", "application/json")
	_, err = w.Write(jsonData)
	if err != nil {
		log.Println("登录成功信息返回失败 ,", err)
	}
}

//用于处理来自客户端的json包 并将其解包
func GetRequestJsonParam(r *http.Request) map[string]interface{} {
	var params map[string]interface{}
	body, err := ioutil.ReadAll(r.Body)
	if err != nil {
		log.Println("GetRequestJson 错误 ,", err)
		return nil
	}
	err = json.Unmarshal(body, &params)
	return params
}
